<?php
/**
 * Congigure
 *
 * 개별 환경정보 등을 설정 및 호출 합니다.
 * (DB 정보, 계정정보, 사이트 정보 등등)
 *
 * @package boot
 * @author  Platform Team
 */

class Configure
{
    private static $config = false;

    /**
     * 설정 정보를 로드 했는지 파악
     *
     * @return boolean
     */
    public static function isLoad()
    {
        return self::$config === false ? false : true;
    }

    /**
     * 설정 정보 세팅
     *
     * @param mixed $mFile (string(파일경로) | array(정보배열))
     * @return  boolean
     */
    public static function load($mFile)
    {
        self::$config = self::_set($mFile);

        if (self::$config === false) {
            return false;
        }

        return true;
    }

    /**
     * 설정 정보 추가
     *
     * @param mixed $mFile (string(파일경로) | array(정보배열))
     * @return  boolean
     */
    public static function add($mFile)
    {
        $config = self::_set($mFile);

        if ($config === false) {
            return false;
        }

        self::$config = array_merge(self::$config, $config);

        return true;
    }

    /**
     * 설정 불러오기 (name 파라미터가 없는 경우는 전체를 반환)
     *
     * @param string $sName
     * @return  mixed
     */
    public static function get($sName=null)
    {
        if ($sName === null) {
            return self::$config;
        }

        return self::$config[$sName] ? self::$config[$sName] : false;
    }

    /**
     * 설정 정보 세팅
     *
     * @param mixed $mFile (string(파일경로) | array(정보배열))
     * @return  boolean | array
     */
    private static function _set($mFile)
    {
        if (is_array($mFile) === true) {
            return $mFile;
        }

        if (is_file($mFile) === true) {

            include $mFile;
            return $CONFIGURE;

        } else {

            return false;

        }
    }
}
